package com.lost.octopus.es.helper.annotation;

import com.lost.octopus.es.helper.entity.query.aggregation.AggregationStrategy;
import com.lost.octopus.es.helper.entity.query.aggregation.NotAggregationStrategy;
import org.apache.logging.log4j.util.Strings;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * es搜索对象注解
 * @author zhangbh
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface EsDocument {

    /**
     * es索引ID
     * @return es索引ID
     */
    String[] indexName();

    /**
     * 排序
     * @return 排序 {@link EsSort}
     */
    EsSort[] sorts() default {};

    /**
     * 分组策略，默认不菲组
     * @return 策略实现
     */
    Class<? extends AggregationStrategy> aggregationStrategy() default NotAggregationStrategy.class;

    /**
     * 自定义索引名称（需要在实体类中加上同名的属性才能使用）
     * 实际取的是实体类中的属性值
     * deleteIndex与reCreateIndex方法暂不支持自定义索引名称删除
     * @return 自定义索引名称
     */
    String customIndexName() default Strings.EMPTY;
}
